package com.login.sotoken.config;

import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Contact;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.info.License;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springdoc.core.models.GroupedOpenApi;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.Map;

/**
 * Knife4jConfig
 * 注意：分组名称暂时只能使用英文或数字，在4.0.0~4.5.0的Knife4j版本中使用中文分组会出现页面访问异常
 * <p>
 * 解决：（2024-06-18）保持原有分组名group不变，新增displayName中文名称；
 * 特别注意：设置displayName后，knife4j.documents.name配置文档时，需使用displayName名称
 * <p>
 *
 * @author qyd
 * @date 2024-04-13
 */
@Configuration
public class Knife4jConfig {

    private final static Logger logger = LoggerFactory.getLogger(Knife4jConfig.class);

    private static final String SERVICE_URL = "http://127.0.0.1:8081/doc.html";
    private static final String API_INFO_TITLE = "so-token接口文档";
    private static final String API_INFO_VERSION = "V1.0";
    private static final String API_INFO_DESCRIPTION = "Api接口列表";
    private static final String API_INFO_LICENSE = "2025年度内部文档,违拷必究.";

    // 用户管理接口
    @Bean
    public GroupedOpenApi apiUser() {
        return GroupedOpenApi.builder()
                .group("user")
                .displayName("用户管理")
                .packagesToScan("com.login.sotoken.controller.user")
                .build();
    }

    // 测试管理接口
    @Bean
    public GroupedOpenApi api3() {
        return GroupedOpenApi.builder()
                .group("test")
                .displayName("测试管理")
                .packagesToScan("com.login.sotoken.controller.test")
                .build();
    }


    @Bean
    public OpenAPI openAPI() {
        return new OpenAPI()
                .info(new Info()
                        .title(API_INFO_TITLE)
                        .description(API_INFO_DESCRIPTION)
                        .version(API_INFO_VERSION)
                        .contact(new Contact().name("Keyidea").email("support@keyidea.cn"))
                        .license(new License().name(API_INFO_LICENSE).url(SERVICE_URL))
                );
    }



}
